<?php
/*
cray 285025600@qq.com
*/

class ControllerAlipayNotify extends Controller {
	
	public function index()
	{

	    $alipayNotify = new AlipayHelper();
	    $verify_result = $alipayNotify->verifyNotify();
	
	    if($verify_result) {//验证成功
	        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	        //请在这里加上商户的业务逻辑程序代
	
	
	        //——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
	
	        //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
	
	        //商户订单号
	
	        $out_trade_no = $_POST['out_trade_no'];
	
	        //支付宝交易号
	
	        $trade_no = $_POST['trade_no'];
	
	        //交易状态
	        $trade_status = $_POST['trade_status'];
	
	
	        if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') {
	            $this->load->model('checkout/order');
	            $order_status_id = $this->config->get('config_processing_status');
	            foreach ($order_status_id as $key=>$value)
	            {
	                $order_status_id = $value;
	            }
	            //$this->log->write('alipay callback: ' .$out_trade_no .', ' .$trade_no. ', '.$trade_status );
	            if((int)$out_trade_no > 0)
	            {
	                //$this->log->write('alipay callback: ' .json_encode($order_id) .',' . $order_status_id );
	                $this->model_checkout_order->addOrderHistory($out_trade_no, $order_status_id, $trade_no);
	                
	            }
	            else 
	           {
	                $this->log->write('uncatch alipay callback: '.(int)$out_trade_no."," .$out_trade_no .', ' .$trade_no. ', '.$trade_status );
	            }
	            
	            //判断该笔订单是否在商户网站中已经做过处理
	            //如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
	            //如果有做过处理，不执行商户的业务程序
	
	            //注意：
	            //该种交易状态只在两种情况下出现
	            //1、开通了普通即时到账，买家付款成功后。
	            //2、开通了高级即时到账，从该笔交易成功时间算起，过了签约时的可退款时限（如：三个月以内可退款、一年以内可退款等）后。
	
	            //调试用，写文本函数记录程序运行情况是否正常
	            //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
	        }
	
	        //——请根据您的业务逻辑来编写程序（以上代码仅作参考）——
	
	        echo "success";		//请不要修改或删除
	
	        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	    }
	    else {
	        $this->log->write('uncatch verify alipay callback:' . json_encode($this->request->post));
	        //验证失败
	        echo "fail";
	        
	        //调试用，写文本函数记录程序运行情况是否正常
	        //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
	    }
	    
	}
}

?>